A computer or other type of electronic system typically includes firmware instructions that are executed upon initial booting or initialization of the computer or electronic system. In a computer, the firmware instructions include basic input/output system (BIOS) code. Typical tasks performed by the BIOS code include a power-on self test (POST) procedure to perform diagnostic tests of system components to ensure proper functionality, configuration of certain components in the computer, loading of an operating system, and other tasks.
Typically, firmware instructions are stored in a read-only memory (ROM), such as electrically erasable and programmable read-only memory (EEPROM) or a flash memory (which is a type of EEPROM that allows block writes). Storing the firmware instructions in ROM (especially non-erasable ROM or erasable ROM with strong erase/rewrite protection mechanisms) reduces the likelihood that the firmware instructions in the ROM will be inadvertently or maliciously modified and corrupted.
After a computer has been shipped to an end user, it may sometimes be desirable to perform an update of the firmware instructions in the ROM. Update of the firmware instructions may be performed to correct previously unrecognized faults, improve functionality, or for other reasons. To update firmware instructions in the ROM of a computer, an end user typically loads a software program downloaded from a computer network or from a removable medium, such as a compact disk (CD), floppy disk, or other media, into the computer. Such software program is executed in the computer to enable the processor of the computer to write to the ROM for updating the firmware instructions. Upon restart, the computer would fetch the updated firmware instructions from the ROM for execution in the computer to initialize the computer.
An issue associated with the ability to update firmware instructions in ROM is that a malicious software program, such as a computer virus, can infect the computer and cause unauthorized modification of the content of the ROM. Such unauthorized modification of the ROM can cause the computer to be unable to reboot, or may cause the computer to become insecure in a way that allows theft of data, data tampering, or other unauthorized use of the computer, without knowledge of the user.